package com.jy.wms.service;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.jy.wms.common.annotions.BaseServiceDescribe;
import com.jy.wms.common.base.BaseService;
import com.jy.wms.common.base.ServiceException;
import com.jy.wms.common.base.SucessException;
import com.jy.wms.dao.WmsTurnoverRuleMapper;
import com.jy.wms.dao.WmsTurnoverRuleMiddleMapper;
import com.jy.wms.pojo.WmsTurnoverRule;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
* @ClassName: WmsTurnoverRuleService.java
* @Description: TODO(这里用一句话描述这个类的作用)
* @Author lh
* @Date Mon Sep 04 11:31:19 GMT+08:00 2017
*/

@Service
public class WmsTurnoverRuleService extends BaseService<WmsTurnoverRuleMapper,WmsTurnoverRule> {

    @Autowired
   private WmsTurnoverRuleMiddleMapper wmsTurnoverRuleMiddleMapper;

/**
 * 查询所有信息
 * @return WmsShelfRule
 */
@BaseServiceDescribe(moduleName = "周转规则",btnName = "查询所有周转规则")
public JSONArray baseSelectAll(String ckid) throws ServiceException {
    JSONArray jsonArray = new JSONArray();
    try {
        List<WmsTurnoverRule> list = dao.baseSelectAll(ckid);
        jsonArray = listTojsonArray(list,jsonArray);
        return jsonArray;
    } catch (Exception e) {
        throw new ServiceException("查询所有周转规则",e);
    }
}

    /**
     * 周转规则管理查询所有及货主拥有的
     * @return WmsShelfRule
     */
    @BaseServiceDescribe(moduleName = "周转规则",btnName = "查询所有周转规则")
    public JSONArray getDictionaryBySshzid(String sshzid, String ckid) throws ServiceException {
        JSONArray jsonArray = new JSONArray();
        try {
            List<WmsTurnoverRule> list = dao.baseSelectAll(ckid);
            jsonArray = listTojsonArray(list,jsonArray);
            List<String> ids = wmsTurnoverRuleMiddleMapper.baseSelectBySshzId(sshzid);
            JSONObject json = new JSONObject();
            json.put("ids",ids);
            jsonArray.add(json);
            return jsonArray;
        } catch (Exception e) {
            throw new ServiceException("查询所有周转规则及货主的周转规则",e);
        }
    }

 /**
 * 插入一条记录
 * @param entity 实体对象
 * @param database 数据库名称
 * @return int
 */
public Integer baseInsert(WmsTurnoverRule entity, String database ){
     return dao.baseInsert( entity,database );
}

/**
* 插入一条记录（匹配有值的字段）
* @param entity 实体对象
* @return int
*/
@BaseServiceDescribe(moduleName = "周转规则",btnName = "增加")
public void baseInsertSelective( WmsTurnoverRule entity) throws SucessException, ServiceException {
  Integer a= dao.baseInsertSelective( entity );
  if(a>0){
      throw new SucessException("周转规则增加成功");
  }else{
      throw new ServiceException("周转规则增加失败");
  }
}

/**
* 删除（根据主键ID删除）
* @param id 主键
* @param database 数据库名称
* @return int
*/
public Integer baseDeleteByPrimaryKey(String id, String database ){
     return dao.baseDeleteByPrimaryKey( id,database );
}

/**
* 删除（根据ID 批量删除）
* @param idList 主键ID列表
* @param database 数据库名称
* @return int
*/
public Integer baseDeleteBathPrimaryKeys(List<String> idList, String database ){
     return dao.baseDeleteBathPrimaryKeys( idList,database );
}

/**
* 分页查询
* @param entity 实体
* @return Page<WmsTurnoverRule>
*/
public Page<WmsTurnoverRule> baseSelectPage(WmsTurnoverRule entity, String ckid) throws ServiceException {

    try {
        PageHelper.startPage(entity.getPage(),entity.getRows());
        return (Page<WmsTurnoverRule>)dao.baseSelectPage( entity,ckid );
    } catch (Exception e){
        throw new ServiceException("查询所有周转规则",e);
    }

}

/**
* 查询（根据主键ID查询）
* @param id 主键ID
* @param database 数据库名称
* @return WmsTurnoverRule
*/
public WmsTurnoverRule baseSelectByPrimaryKey(String id, String database ){
     return dao.baseSelectByPrimaryKey( id,database );
}

/**
* 查询（根据ID 批量查询）
* @param idList 主键ID列表
* @param database 数据库名称
* @return list
*/
public Integer baseSelectBathPrimaryKeys(List<WmsTurnoverRule> idList, String database ){
     return dao.baseSelectBathPrimaryKeys( idList,database );
}

/**
*修改 （匹配有值的字段）
* @param entity 主键ID列表
* @param database 数据库名称
* @return int
*/
public Integer baseUpdateByPrimaryKeySelective(WmsTurnoverRule entity, String database ){
     return dao.baseUpdateByPrimaryKeySelective( entity,database );
}

/**
*修改（根据主键ID修改）
* @param entity 主键ID列表
* @param database 数据库名称
* @return int
*/
public Integer baseUpdateByPrimaryKey(WmsTurnoverRule entity, String database ){
     return dao.baseUpdateByPrimaryKey( entity,database );
}

    /**
     * 根据名称查询数据库是否有相同规则名称的记录（去重）
     */
    public Integer getCountByMc(String gzmc, String ckid){
        return dao.getCountByMc(gzmc,ckid);
    }

    /**
     * 私有方法 List<WmsTurnoverRule> 转换成 JSONArray
     * @param list
     * @param jsonArray
     * @return
     */
    private JSONArray listTojsonArray(List<WmsTurnoverRule> list, JSONArray jsonArray){
        JSONObject json = new JSONObject();
        for (int i = 0; i < list.size(); i++) {
            json.put("dictionaryid",list.get(i).getId());
            json.put("value",list.get(i).getGzmc());
            jsonArray.add(json);
        }
        return jsonArray;
    }

}
